The child is now aware of both the combobox and frame (if has-frame is
authorAlberto Ruiz <aruiz@gnome.org>
Sun, 16 Mar 2008 01:37:12 +0000 (01:37 +0000)
committerAlberto Ruiz <aruiz@src.gnome.org>
Sun, 16 Mar 2008 01:37:12 +0000 (01:37 +0000)
2008-16-03  Alberto Ruiz <aruiz@gnome.org>

* gtl/gtkcombobox.c: (gtk_combo_box_size_allocate) The child is now aware of
both the combobox and frame (if has-frame is set) thickness and border. (bug #521442)

svn path=/trunk/; revision=19886

ChangeLog
gtk/gtkcombobox.c

index b278b33d77ab323ef394147680b4a0c702dfdb4b..e0d6b34850e2a486b6f0ce156697f8534a40f794 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-16-03  Alberto Ruiz <aruiz@gnome.org>
+
+       * gtl/gtkcombobox.c: (gtk_combo_box_size_allocate) The child is now aware of
+       both the combobox and frame (if has-frame is set) thickness and border. (bug #521442)
+
 2008-03-15  Andre Klapper  <a9016009@gmx.de>
 
        * configure.in: Added "si" to ALL_LINGUAS.
index 1828ceca3a4893d1db45eb68f08dbe0b8730e7ed..3db35f2431392d4e3aa87a017d261f986fcdd51c 100644 (file)
@@ -2284,6 +2284,10 @@ gtk_combo_box_size_allocate (GtkWidget     *widget,
     {
       /* list mode */
 
+      /* Combobox thickness + border-width */
+      int delta_x = shadow_width + GTK_CONTAINER (widget)->border_width;
+      int delta_y = shadow_height + GTK_CONTAINER (widget)->border_width;
+
       /* button */
       GTK_COMBO_BOX_SIZE_ALLOCATE_BUTTON
 
@@ -2292,38 +2296,40 @@ gtk_combo_box_size_allocate (GtkWidget     *widget,
         child.x = allocation->x + req.width;
       else
         child.x = allocation->x;
+
       child.y = allocation->y;
       child.width = allocation->width - req.width;
       child.height = allocation->height;
 
       if (priv->cell_view_frame)
         {
-         child.width = MAX (1, child.width);
-         child.height = MAX (1, child.height);
+          child.x += delta_x;
+          child.y += delta_y;
+          child.width = MAX (1, child.width - delta_x * 2);
+          child.height = MAX (1, child.height - delta_y * 2);
           gtk_widget_size_allocate (priv->cell_view_frame, &child);
 
           /* the sample */
-         if (priv->has_frame)
-           {
-             child.x +=
-               GTK_CONTAINER (priv->cell_view_frame)->border_width +
-               GTK_WIDGET (priv->cell_view_frame)->style->xthickness;
-             child.y +=
-               GTK_CONTAINER (priv->cell_view_frame)->border_width +
-               GTK_WIDGET (priv->cell_view_frame)->style->ythickness;
-             child.width -= 2 * (
-                                 GTK_CONTAINER (priv->cell_view_frame)->border_width +
-                                 GTK_WIDGET (priv->cell_view_frame)->style->xthickness);
-             child.height -= 2 * (
-                                  GTK_CONTAINER (priv->cell_view_frame)->border_width +
-                                  GTK_WIDGET (priv->cell_view_frame)->style->ythickness);
-           }
+          if (priv->has_frame)
+            {
+              delta_x = GTK_CONTAINER (priv->cell_view_frame)->border_width +
+                GTK_WIDGET (priv->cell_view_frame)->style->xthickness;
+              delta_y = GTK_CONTAINER (priv->cell_view_frame)->border_width +
+                GTK_WIDGET (priv->cell_view_frame)->style->ythickness;
+
+              child.x += delta_x;
+              child.y += delta_y;
+              child.width -= delta_x * 2;
+              child.height -= delta_y * 2;
+            }
+        }
+      else
+        {
+          child.x += delta_x;
+          child.y += delta_y;
+          child.width -= delta_x * 2;
+          child.height -= delta_y * 2;
         }
-      
-      child.x += shadow_width;
-      child.y += shadow_height;
-      child.width -= shadow_width * 2;
-      child.height -= shadow_height * 2;
       
       child.width = MAX (1, child.width);
       child.height = MAX (1, child.height);